package 刷题.leedcode2;
//逆置单链表

/**
 * 迭代法
 *
 * 从前向后反转，使cur指向当前结点，pre指向父结点，令cur.next = pre，
 * 反转之后cur.next修改为pre，需要临时保存cur.next
 * 迭代结束后，cur指向null，pre指向最后一个结点，返回pre
 * 头结点经过反转后变成尾结点，下一结点指向null，所以pre初始化为null
 */
public class Solution_1 {
    public ListNode reverseList(ListNode head){
        ListNode cur = head,pre = null;
        while(cur != null){
            ListNode t = cur.next;//前进一位
            cur.next = pre;//后一个结点指向前一个结点
            pre = cur;//pre指向下一个结点
            cur = t;
        }
        return pre;
    }
}
